#include<iostream>

using namespace std;

const int N = 1e6 + 10;

int length(int q[])
{
    return (q[N - 1] - q[N - 2] + N - 2) % (N - 2);
}

bool empty(int q[])
{
    return q[N - 1] == q[N - 2];
}

bool full(int q[])
{
    return (q[N - 1] - q[N - 2] + 1) % (N - 2) == 0;
}

void push(int q[], int x)
{
    if (full(q))
        return;
    q[q[N - 1]] = x;
    q[N - 1] = (q[N - 1] + 1) % (N - 2);
}

int pop(int q[])
{
    if (empty(q))
        return ~(1 << 31);
    int tmp = q[q[N - 2]];
    q[N - 2] = (q[N - 2] + 1) % (N - 2);
    return tmp;
}

int query(int q[])
{
    if (empty(q))
        return ~(1 << 31);
    return q[q[N - 2]];
}
